#include <stdio.h>
#include <stdlib.h>

//关键路径
/*
AOE网：
在带权有向图中，以顶点表示事件，以有向边表示活动，以边上的权值表示完成该活动的开销(如
完成活动所需的时间)，称之为用边表示活动的网络， 简称AOE网(Activity On Edge NetWork)

在AOE网中仅有一个入度为0的顶点，称为开始顶点(源点)，它表示整个工程的开始;
也仅有一个出度为0的顶点，称为结束顶点(汇点)，它表示整个工程的结束。

关键路径：
从源点到汇点的有向路径可能有多条，所有路径中，具有最大路径长度的路径称为
关键路径，而把关键路径上的活动称为关键活动。可能有多条关键路径

完成整个工程的最短时间就是关键路径的长度，若关键活动不能按时完成，则整个工程的完成时间就会延长

求关键路径的步骤：
①求所有事件的最早发生时间ve()
对各个顶点做拓扑排序，按拓扑排序序列，依次求各个顶点的ve(k)：
ve(源点)=0
ve(k)=Max{ ve(j) + Weight(vj,vk) }  vj为vk的任意前驱

②求所有事件的最迟发生时间vl()
对各个顶点做逆拓扑排序，按逆拓扑排序序列，依次求各个顶点的vl(k)：
vl(汇点)=ve(汇点)
vl(k)=Min{ vl(j) - Weight(vj,vk) }  vj为vk的任意后继

③求所有活动的最早发生时间e()
若边<vk,vj>表示活动ai，则有 e(i) = ve(k)

④求所有活动的最迟发生时间l()
若边<vk,vj>表示活动ai，则有l(i) = vl(j) - Weight(vk,vj)

⑤求所有活动的时间余量d()   d(i)=0的活动就是关键活动，由关键活动可得关键路径
d(i) = l(i) - e(i)




*/

int main()
{
    printf("\n\n========================================================================\n\n");

    printf("\n\n========================================================================\n\n");
    return 0;
}